#if !defined(SystemHeader)
#define SystemHeader

#include "globals.h"
#include "mutex.h"
#include "rules.h"
#include "trail.h"

class Rules;

// Precisely speaking, an environment for logic deduction.
// Could be considered a very simple facade.
class System {
public:
  System (Rules &r, Globals &g, Trail &t) :
    rules (r), globals (g), trail (t) {
  }

  bool load (const std::string&); // Loads from file
  bool process (std::string&); // Processes input

  Rules &rules;
  Globals &globals;
  Trail &trail;
};

#endif
